package com.ningxia.water.controller;

import com.ningxia.water.enums.ApplicantZoneTypeEnum;
import com.ningxia.water.reuslt.Result;
import com.ningxia.water.reuslt.ResultResponse;
import com.ningxia.water.service.ITsMonthDataService;
import com.ningxia.water.vo.out.MonthReportVo;
import com.ningxia.water.vo.out.OtherReportVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author huangzhen
 * @create 2021-05-17 17:02
 */
@RestController
@RequestMapping("/monthreport")
@Api(tags = "报表管理-月度综合统计报表api")
public class MonthReportController {

    @Autowired
    private ITsMonthDataService monthDataService;


    /**
     * 查询具体日期具体乡镇或工业园区（单个乡镇或园区）下的用户综合统计数据
     *
     * @param month    日期
     * @param zoneType 地区类型 1：工业园区 2：乡镇
     * @param zoneId   地区id 工业园区id或乡镇id
     * @return
     */
    @GetMapping("/getapplicantsinfos")
    @ApiOperation(value = "获取某个乡镇或工业园区下的所有用户综合统计报表")
    public Result getApplicantsInfos(String month, Integer zoneType, Integer zoneId) {
        List<MonthReportVo> list = monthDataService.getApplicantsInfos(month, zoneType, zoneId);
        return ResultResponse.getSuccessResult(list);
    }

    /**
     * 通过日期和乡镇id查询许可用水量、计划用水量、累计用水量、工业用水量、农业用水量、生活用水量、生产用水量
     *
     * @param month
     * @param townIdList
     * @return
     */
    @PostMapping("/gettowninfos")
    @ApiOperation(value = "通过月份和乡镇id集合获取乡镇总的综合统计报表")
    public Result getTownInfos(@RequestParam("month") String month, @RequestBody List<Integer> townIdList) {
//        LogUtils.getLogInstance().info(month + "   " + Arrays.toString(townIdList.toArray()));
        List<OtherReportVo> list = monthDataService.getTownOrAreaInfos(month, ApplicantZoneTypeEnum.TOWN.getCode(), townIdList);

        return ResultResponse.getSuccessResult(list);
    }


    /**
     * 通过日期工业园区id查询许可用水量、计划用水量、累计用水量、工业用水量、农业用水量、生活用水量、生产用水量
     *
     * @param month
     * @param
     * @return
     */
    @PostMapping("/getareainfos")
    @ApiOperation(value = "通过月份和工业园区id集合获取工业园区总的综合统计报表")
    public Result getAreaInfos(@RequestParam("month") String month, @RequestBody List<Integer> areaIdList) {
        List<OtherReportVo> list = monthDataService.getTownOrAreaInfos(month, ApplicantZoneTypeEnum.AREA.getCode(), areaIdList);
        return ResultResponse.getSuccessResult(list);
    }

    /**
     * 通过日期和区县id查询许可用水量、计划用水量、累计用水量、工业用水量、农业用水量、生活用水量、生产用水量
     *
     * @param month
     * @param
     * @return
     */
    @PostMapping("/getdistrictinfos")
    @ApiOperation(value = "通过月份和区县id集合获取区县总的综合统计报表")
    public Result getDistrictInfos(@RequestParam("month") String month, @RequestBody List<Integer> districtIdList) {
        List<OtherReportVo> list = monthDataService.getDistrictInfos(month, districtIdList);
        return ResultResponse.getSuccessResult(list);
    }

    /**
     * 通过日期和区县id查询许可用水量、计划用水量、累计用水量、工业用水量、农业用水量、生活用水量、生产用水量
     *
     * @param month
     * @param
     * @return
     */
    @PostMapping("/getcityinfos")
    @ApiOperation(value = "通过月份和城市id集合获取城市总的综合统计报表")
    public Result getCityInfos(@RequestParam("month") String month, @RequestBody List<Integer> cityList) {
        List<OtherReportVo> list = monthDataService.getCityInfos(month, cityList);
        return ResultResponse.getSuccessResult(list);
    }


}
